package com.liu.recursive;

public class RecursiveTest1 {
    public static void main(String[] args) {
        int f = f(3);
        System.out.println("阶乘：" + f);
        System.out.println("----------------------------------");
        f1(1,10);
    }
    // 求n的阶乘
    /*
        f(n):求n的阶乘 ---> f(n-1)求n-1的阶乘
        设计递归的步骤
            1.找重复：n * (n - 1)的阶乘，求n - 1的阶乘是原问题的重复（规模更小） --- 子问题
            2.找变化：变化的量应该作为参数
            3.找边界：出口
     */
    static int f(int n) {
        if (n == 1) {
            return 1;
        }
        return n * f(n - 1);
    }

    // 打印 i ~ j
    /*
        设计递归的步骤
            1.找重复：
            2.找变化：变化的量应该作为参数
            3.找边界：出口
     */
    static void f1(int i, int j){
        if (i > j){
            return;
        }
        System.out.print(i + " ");
        f1(i + 1,j);
    }


}
